home *** CD-ROM | disk | FTP | other *** search
/ US Department of Defenseā€¦ndamentals 1.0 2004 April / US Department of Defense: Firewall & Router Fundamentals 1.0 2004 April.iso / text_only / includes / flms_functions.js < prev    next >
Text File  |  2004-03-11  |  16KB  |  547 lines

  1. function flms_check_access(tmp_dir)
  2. {
  3.   if (!flms_check_user())
  4.       flms_run_error("access",tmp_dir);
  5. }
  6.  
  7. function flms_check_user()
  8. {
  9.   var tmp_return = false;
  10.   USERNAME = get_cookie_value("username","");
  11.   if (USERNAME != "")
  12.       tmp_return = true;
  13.     
  14.   KARTA_USER = get_cookie_value("KU_" + PROG_ID + "_" + USERNAME + "_user","");
  15.   FIRST_NAME = get_sub_cookie_value("fn",KARTA_USER,"");
  16.   LAST_NAME = get_sub_cookie_value("ln",KARTA_USER,"");
  17.   
  18.   return tmp_return
  19. }
  20.  
  21. function flms_check_url()
  22. {
  23.   //check URL for username and password
  24.   USERNAME = get_url_value('username');
  25.   PASSWORD = decrypt(get_url_value('password'), generate_key(),122,48);
  26.   
  27.   if ((USERNAME != null) && (PASSWORD != null)) {
  28.       //need to log in user
  29.       if (flms_verify_user())  {
  30.           flms_set_session_cookie();
  31.           location.href="menu.htm";
  32.       }
  33.       else
  34.           flms_run_error("login","");
  35.   }
  36. }
  37.  
  38. function flms_do_login()
  39. {
  40.   USERNAME = document.f.username.value;
  41.   PASSWORD = document.f.password.value;
  42.   //enc_mod_key = document.f.modulekey.value;
  43.   enc_mod_key = "";
  44.   
  45.   PASSED_CHECKS = true;
  46.   
  47.   //verify fields are not blank
  48.   if (USERNAME == '') {
  49.       PASSED_CHECKS = false;
  50.       //flms_run_error("empty","an Username");
  51.   }
  52.   if (PASSWORD == '') {
  53.       PASSED_CHECKS = false;
  54.       //flms_run_error("empty","a Password");
  55.   }
  56.   
  57.   if (flms_verify_user())  {
  58.       flms_set_session_cookie();
  59.       if (enc_mod_key != "")
  60.           flms_dec_module(enc_mod_key);
  61.       location.href="menu.htm";
  62.   }
  63.   else
  64.       flms_run_error("login","");
  65. }
  66.  
  67. function flms_set_session_cookie()
  68. {
  69.   document.cookie = "username=" + USERNAME +"; path=" + COOKIE_PATH + ";";
  70. }
  71.  
  72. function flms_verify_user()
  73. {
  74.   //get cookie record for this user
  75.   KARTA_USER = get_cookie_value("KU_" + PROG_ID + "_" + USERNAME + "_user","");
  76.   if (KARTA_USER != "")
  77.   {
  78.       //found user, now need to verify password and parse data
  79.       if (PASSWORD != decrypt(get_sub_cookie_value("pwd",KARTA_USER,""), generate_key(),122,48))
  80.           return false;
  81.       FIRST_NAME = get_sub_cookie_value("fn",KARTA_USER,"");
  82.       LAST_NAME = get_sub_cookie_value("ln",KARTA_USER,"");
  83.       return true;
  84.   }
  85.   return false;
  86. }
  87.  
  88. function flms_do_register()
  89. {
  90.   
  91.   PASSED_CHECKS = true;
  92.   
  93.   //get reg info from form
  94.   if (FLMS_AUTO_REGISTER) {
  95.     FIRST_NAME = tmp_first_name;
  96.     LAST_NAME = tmp_last_name;
  97.   }
  98.   else {
  99.     FIRST_NAME = document.f.first_name.value;
  100.     LAST_NAME = document.f.last_name.value;
  101.   }
  102.   
  103.   //verify fields are not blank
  104.   if (FIRST_NAME == '') {
  105.       PASSED_CHECKS = false;
  106.       flms_run_error("empty","your First Name");
  107.   }
  108.   if (LAST_NAME == '')  {
  109.       PASSED_CHECKS = false;
  110.       flms_run_error("empty","your Last Name");
  111.   }
  112.          
  113.   //save info to cookie if passed checks
  114.   if (FLMS_AUTO_LOGIN)  {
  115.     var tmp_user_id = get_url_value('user_id'); 
  116.     USERNAME = tmp_user_id;
  117.     PASSWORD1 = encrypt(USERNAME, generate_key(),122,48);
  118.     PASSWORD2 = PASSWORD1;
  119.   }
  120.   else  {
  121.     USERNAME = document.f.username.value;
  122.     if (USERNAME == '')
  123.         {
  124.             PASSED_CHECKS = false;
  125.             flms_run_error("empty","an Username");
  126.         }
  127.     PASSWORD1 = document.f.password1.value;
  128.         PASSWORD2 = document.f.password2.value; 
  129.         if ((PASSWORD1 == '') || (PASSWORD2 == ''))
  130.         {
  131.             PASSED_CHECKS = false;
  132.             flms_run_error("empty","a Password");
  133.         }
  134.         
  135.         //verify passwords
  136.         if (PASSWORD1 != PASSWORD2)
  137.         {
  138.             PASSED_CHECKS = false;
  139.             flms_run_error("passwords","");
  140.             document.f.password1.value = "";
  141.             document.f.password2.value = "";
  142.         }
  143.         //encode password
  144.         PASSWORD1 = encrypt(PASSWORD1, generate_key(),122,48);
  145.     var tmp_user_id = USERNAME;
  146.   }
  147.   
  148.   
  149.   //verify username is not in use
  150.   if (flms_dup_username(USERNAME)) {
  151.       PASSED_CHECKS = false;
  152.       flms_run_error("dupUser","");
  153.   }
  154.   if (PASSED_CHECKS && tmp_user_id != null)  {
  155.     //register user
  156.     //set general user cookie
  157.     flms_set_cookie_data(PROG_ID,tmp_user_id,"user","fn|" + FIRST_NAME + "&ln|" + LAST_NAME + "&pwd|" + PASSWORD1 + "&time|0");
  158.     
  159.     //set bookmark/location cookie
  160.     //flms_set_cookie_data(PROG_ID,tmp_user_id,"loc",flms_add_sco_locs(NUMSCOS,NUMSUBSCOS));
  161.         
  162.     //set status cookie
  163.     flms_set_cookie_data(PROG_ID,tmp_user_id,"status",flms_add_sco_status(NUMSCOS,NUMSUBSCOS));
  164.     if (!FLMS_AUTO_REGISTER)
  165.           alert("Registration Complete!");
  166.         location.href="relogin.htm?username=" + USERNAME + "&password=" + PASSWORD1;
  167.   }
  168.   else  {
  169.     alert("Registration Failed!");
  170.   }
  171. }
  172.  
  173. function flms_dup_username(tmp_username)
  174. {
  175.   //check to see if this user is in cookie, return true if so.
  176.   if (get_cookie_value("KU_" + PROG_ID + "_" + tmp_username + "_user","") == null)
  177.       return true;
  178.   else
  179.       return false;
  180. }
  181.  
  182. function flms_get_sco_status(tmp_sco,tmp_sub_sco)
  183. {
  184.   //get sco or sub sco status
  185.   tmp_status = "n";
  186.   tmp_status_list = get_cookie_value("KU_" + PROG_ID + "_" + get_cookie_value("username","") + "_status","");
  187.   if (tmp_status_list != "")
  188.   {        
  189.       tmp_status = get_item_in_list(get_item_in_list(tmp_status_list,tmp_sco,"&"),tmp_sub_sco,"|");
  190.   }
  191.   return tmp_status;
  192. }
  193.  
  194. function flms_get_sco_loc(tmp_sco,tmp_dt,tmp_sub_sco)
  195. {
  196.   //get sco or sub sco status
  197.   tmp_loc = "0";
  198.   tmp_loc_list = get_cookie_value("KU_" + PROG_ID + "_" + get_cookie_value("username","") + "_loc_" + tmp_dt,"");
  199.   if (tmp_loc_list == "") {
  200.     //need to populate this location DT
  201.     tmp_loc_list = flms_add_sco_locs(NUMSCOS,NUMSUBSCOS);
  202.     flms_set_cookie_data(PROG_ID,get_cookie_value("username",""),"loc_" + tmp_dt,tmp_loc_list);
  203.   }
  204.   if (tmp_loc_list != "")
  205.   {        
  206.       tmp_loc = get_item_in_list(get_item_in_list(tmp_loc_list,tmp_sco,"&"),tmp_sub_sco,"|");
  207.   }
  208.   return tmp_loc;
  209. }
  210.  
  211. function flms_get_mod_complete(tmp_start_sco, tmp_end_sco)
  212. {
  213.   for (b = tmp_start_sco; b < tmp_end_sco + 1; b++) {
  214.     var tmp_value = flms_get_sco_status(b,"1");
  215.       if ((tmp_value != "c") && (tmp_value != "p")) {
  216.           return false;
  217.     }
  218.   }
  219.   return true;
  220. }
  221.  
  222. function flms_set_mod_complete(tmp_start_sco, tmp_end_sco)
  223. {
  224.   for (b = tmp_start_sco; b < tmp_end_sco + 1; i++) {
  225.     flms_set_sco_status(b,"1","c");
  226.   }
  227. }
  228.  
  229. function flms_set_sco_status(tmp_sco,tmp_sub_sco,tmp_status)
  230. {
  231.   var tmp_val = "";
  232.   var tmp_usr = "";
  233.   
  234.   //get sco status cookie
  235.   tmp_usr = get_cookie_value("username","");
  236.   tmp_val = flms_get_cookie_data(PROG_ID,tmp_usr,"status");
  237.   if (tmp_val != "")  {
  238.     tmp_val = set_item_in_list(tmp_val,set_item_in_list(get_item_in_list(tmp_val,tmp_sco,"&"),tmp_status,tmp_sub_sco,"|"),tmp_sco,"&");
  239.       flms_set_cookie_data(PROG_ID,tmp_usr,"status",tmp_val);
  240.   }
  241.   else
  242.       alert(flms_run_error("lms"));
  243. }
  244.  
  245. function flms_set_sco_loc(tmp_sco,tmp_dt,tmp_sub_sco,tmp_loc)
  246. {
  247.   var tmp_val = "";
  248.   var tmp_usr = "";
  249.   
  250.   //get sco loc cookie
  251.   tmp_usr = get_cookie_value("username","");
  252.   tmp_val = flms_get_cookie_data(PROG_ID,tmp_usr,"loc_" + tmp_dt);
  253.   if (tmp_val == "") {
  254.     //need to populate this location DT
  255.     tmp_val = flms_add_sco_locs(NUMSCOS,NUMSUBSCOS);
  256.   }
  257.   if (tmp_val != "")  {
  258.     tmp_val = set_item_in_list(tmp_val,set_item_in_list(get_item_in_list(tmp_val,tmp_sco,"&"),tmp_loc,tmp_sub_sco,"|"),tmp_sco,"&");
  259.     flms_set_cookie_data(PROG_ID,tmp_usr,"loc_" + tmp_dt,tmp_val);
  260.   }
  261.   else
  262.       alert(flms_run_error("lms"));
  263. }
  264.  
  265. function flms_add_session_time(session_time)
  266. {
  267.   //note all times are in minutes
  268.   tmp_usr = get_cookie_value("username","");
  269.   tmp_val = flms_get_cookie_data(PROG_ID,tmp_usr,"user");
  270.   if (tmp_val != "")  {
  271.     var total_session_time = parseInt(session_time) + parseInt(get_sub_cookie_value("time",tmp_val,""));
  272.     tmp_val = set_item_in_list(tmp_val,set_item_in_list(get_item_in_list(tmp_val,"4","&"),total_session_time.toString(),"2","|"),"4","&");
  273.     flms_set_cookie_data(PROG_ID,tmp_usr,"user",tmp_val);
  274.   }
  275. }
  276.  
  277. function flms_add_sco_locs(tmp_num_scos, tmp_num_sub_scos)
  278. {
  279.   var tmp_value = "";
  280.   for (i = 0; i < tmp_num_scos; i++)  {
  281.     //add master sco location
  282.     tmp_value += "0|";
  283.     //add subsco locations
  284.     for (j = 0; j < tmp_num_sub_scos[i]; j++) {
  285.         tmp_value += "0|";
  286.     }
  287.     //add list delimiter
  288.     tmp_value += "&";
  289.   }
  290.   return tmp_value
  291. }
  292.  
  293. function flms_add_sco_status(tmp_num_scos, tmp_num_sub_scos)
  294. {
  295.   var tmp_value = "";
  296.   for (i = 0; i < tmp_num_scos; i++)  {
  297.     //add master sco status (n = not attempted, i = incomplete, c = complete, p = passed, f = failed)
  298.     tmp_value += "n|";
  299.     //add subsco status
  300.     for (j = 0; j < tmp_num_sub_scos[i]; j++) {
  301.         tmp_value += "n|";
  302.     }
  303.     //add list delimiter
  304.     tmp_value += "&";
  305.   }
  306.   return tmp_value
  307. }
  308.  
  309. function flms_run_sco(tmp_dir,tmp_sco_num)
  310. {
  311.   if (check_preq("SCOLINK" + convert_num_to_str(tmp_sco_num)))  {
  312.     location.href = tmp_dir + "/start.htm?filelms=1&sco=" + tmp_sco_num;
  313.   }
  314.   else
  315.     alert("You must complete the modules in the order presented.");
  316. }
  317.  
  318. function flms_enc_module()
  319. {
  320.   mod_key = "";
  321.   num_comp = 0;
  322.   
  323.   for (k=0;k<6;k++) {
  324.       var start_sco = eval("cMod" + k + "End") + 1;
  325.       var end_sco = eval("cMod" + (k+1) + "End");
  326.   
  327.       if (flms_get_mod_complete(start_sco, end_sco)) {
  328.           mod_key += "C";
  329.           num_comp += 1;
  330.       }
  331.       else
  332.           mod_key += "I";
  333.   }
  334.   
  335.   return encrypt(mod_key.substr(0,num_comp) + "Z" + mod_key.substr(num_comp,mod_key.length), LAST_NAME + "KARTAUSER" + PROG_ID,90,65);
  336. }
  337.  
  338. function flms_dec_module(enc_mod_key)
  339. {
  340.   var tmp_error = false;
  341.   var tmp_num_comp = 0;
  342.   
  343.   //decrypt key
  344.   var mod_key = decrypt(enc_mod_key,LAST_NAME + "KARTAUSER" + PROG_ID,90,65);
  345.   
  346.   //get numcomp
  347.   var num_comp = mod_key.indexOf("Z",0);
  348.   
  349.   //get completion w/o validator        
  350.   mod_key = mod_key.substr(0,num_comp) + mod_key.substr(num_comp+1,mod_key.length);
  351.   
  352.   //Validate key
  353.   for (i=0;i<6;i++) {
  354.       tmp_char = mod_key.substr(i,1);
  355.       if (tmp_char == "C")
  356.           tmp_num_comp += 1
  357.       else  {
  358.           if (tmp_char != "I")
  359.               tmp_error=true;
  360.       }
  361.   }
  362.   if (tmp_num_comp != num_comp)
  363.       tmp_error = true;
  364.   
  365.   if (tmp_error)  {
  366.       alert("Error! Invalid Module Key!\nModule info not updated!");
  367.       //parent.location.href = "login.htm";
  368.   }
  369.   else  {
  370.       //update sco status for modules
  371.       var start_sco = 0;
  372.       var end_sco = 0;    
  373.       for (k=0;k<6;k++) {
  374.           tmp_char = mod_key.substr(k,1);
  375.           if (tmp_char == "C")  {
  376.               start_sco = eval("cMod" + k + "End") + 1;
  377.               end_sco = eval("cMod" + (k+1) + "End");
  378.               flms_set_mod_complete(start_sco, end_sco);
  379.           }
  380.       }
  381.   }
  382. }
  383.  
  384. function flms_show_cert()
  385. {
  386.   if (COURSE_COMPLETE)  {
  387.     var tmp_username = get_cookie_value("username","");
  388.     var tmp_pwd = get_sub_cookie_value("pwd",get_cookie_value("KU_"+PROG_ID+"_"+tmp_username + "_user",""),"");
  389.         
  390.     //show cert
  391. CertWin=open("certificate.htm","CerttWin","scrollbars=no,resizeable=no,width=700,height=400,toolbar=no,directories=no,menubar=yes,status=yes,");
  392.             //location.href="relogin.htm?username=" + tmp_username + "&password=" + tmp_pwd;
  393.     }
  394. }
  395.  
  396. function flms_show_code()
  397. {
  398.   var tmp_username = get_cookie_value("username","");
  399.   var tmp_key = tmp_username.toUpperCase() + KEY_VALUE;
  400.   alert("Your completion code is: " + convertDecStrToStr(encrypt(COMPSTR+convert_num_to_char(get_sub_cookie_value("time",get_cookie_value("KU_"+PROG_ID+"_"+tmp_username + "_user",""),"")),tmp_key,VALUE_HI,VALUE_LO)) + "\nWrite this code down, log onto the " + LMS_NAME + ", take the " + COURSE_TITLE + " (CD Version) Course\nand enter the code when prompted. This will complete the course.");
  401. }
  402.  
  403. function flms_auto_login()
  404. {
  405.   //check url for user_id
  406.   if (FLMS_AUTO_LOGIN) {
  407.     var tmp_user_id = get_url_value('user_id');  
  408.     if ((tmp_user_id == null) || (isNaN(tmp_user_id))) {
  409.       //use default user_id
  410.       tmp_user_id = PROG_ID;
  411.     }
  412.     //check to see if this user is registered
  413.     var tmp_key = "KU_" + PROG_ID + "_" + tmp_user_id + "_user";
  414.     if (get_cookie_value(tmp_key,"") == "") {
  415.       location.href = "register.htm?user_id=" + tmp_user_id;
  416.     }
  417.     else  {
  418.       USERNAME = tmp_user_id;
  419.       PASSWORD1 = encrypt(USERNAME, generate_key(),122,48);
  420.       PASSWORD2 = PASSWORD1;
  421.       //do auto login
  422.       location.href = "relogin.htm?username=" + USERNAME + "&password=" + PASSWORD1;
  423.     }
  424.   }
  425. }
  426.  
  427. function flms_run_error(tmp_error, tmp_arg)
  428. {
  429.   if (tmp_error == "login") {
  430.       alert("Login Invalid! Please try again.");
  431.       //document.f.password.value='';
  432.     location.href = tmp_arg + "login.htm";
  433.   }
  434.   if (tmp_error == "access")  {
  435.     if (!FLMS_AUTO_LOGIN)
  436.         alert("You have not logged into the training.  Please do so.");
  437.       if (tmp_arg == "close")
  438.           window.close();
  439.       else
  440.           location.href = tmp_arg + "login.htm";
  441.   }
  442.   if (tmp_error == "empty") {
  443.       alert("You must supply " + tmp_arg + ".");
  444.   }
  445.   if (tmp_error == "passwords") {
  446.       alert("Your passwords do not match, try again.");
  447.   }
  448.   if (tmp_error == "dupUser") {
  449.       alert("There is already an user with this username.  Please select another username.");
  450.       document.f.username.value = '';
  451.   }
  452.   if (tmp_error == "lms") {
  453.       alert("There has been an error with the LMS system.  Student Tracking is not working correctly.");
  454.   }
  455. }
  456.  
  457. function flms_sco_finish(tmp_href)
  458. {
  459.   var END_TIME = new Date();
  460.   var BEGIN_TIME = new Date(get_cookie_value("BEGIN_TIME"));
  461.   var min_date_diff = ((END_TIME - BEGIN_TIME) / 1000) / 60;
  462.   min_date_diff = Math.floor(min_date_diff);
  463.   if (min_date_diff == 0)
  464.     min_date_diff = 1;
  465.   
  466.   var tmp_cur_sco = get_cookie_value("CUR_SCO")
  467.   if (tmp_cur_sco != null)  {
  468.     //add current time to session time
  469.     flms_add_session_time(min_date_diff);
  470.   }
  471.   
  472.   //document.cookie = "CUR_SCO=; path=" + COOKIE_PATH + ";";
  473.   document.cookie = "SCO_STATUS=; path=" + COOKIE_PATH + ";";
  474.   document.cookie = "BEGIN_TIME=; path=" + COOKIE_PATH + ";";
  475.   
  476.   if (RUN_TYPE == "flms")  {
  477.     //get all the FLMS cookie data and save it to suspend_data
  478.     get_flms_cookie_data(PROG_ID,get_user_name());
  479.     //if SCO is complete, set it to "completed"
  480.     if (flms_get_mod_complete(1,NUMSCOS)) {
  481.       var tmp_run_type = RUN_TYPE;
  482.       RUN_TYPE = "";
  483.       set_sco_status("1","c");
  484.       RUN_TYPE = tmp_run_type;
  485.     }
  486.     if (CONTENT_WIN != null)  {
  487.       /*
  488.       if (tmp_cur_sco != null)  {
  489.         var tmp_mod_num = 0;
  490.         for (w=1;w<NUMMODS;w++) {
  491.           if (parseInt(tmp_cur_sco) <= MOD_END[w])  {
  492.             tmp_mod_num = w;
  493.             w = NUMMODS;
  494.           }
  495.         }
  496.         CONTENT_WIN.location.href = "../mod" + tmp_mod_num + "_menu.htm";
  497.       }
  498.       else  {  
  499.       */
  500.         CONTENT_WIN.location.href = tmp_href;
  501.       //}
  502.     }
  503.   }
  504.   else  {
  505.     parent.location.href = tmp_href; 
  506.       //parent.location.href = "../relogin.htm?username=" + TEMP_USER + "&password=" + TEMP_PWD;
  507.   }
  508. }
  509.  
  510. function flms_set_cookie_data(tmp_prog_id,tmp_user_id,cookie_key,tmp_data)
  511. {
  512.   var tmp_key = "KU_" + tmp_prog_id + "_" + tmp_user_id + "_" + cookie_key;
  513.   document.cookie = tmp_key + "=" + tmp_data + "; expires=" + EXPIRE_TIME + "; path=" + COOKIE_PATH + ";";
  514. }
  515.  
  516. function flms_get_cookie_data(tmp_prog_id,tmp_user_id,cookie_key)
  517. {
  518.   var tmp_key = "KU_" + tmp_prog_id + "_" + tmp_user_id + "_" + cookie_key;
  519.   return get_cookie_value(tmp_key,"");
  520. }
  521.  
  522. function flms_get_cur_sco()
  523. {
  524.   return get_cookie_value("CUR_SCO","");
  525. }
  526.  
  527. function flms_get_flash_params(tmp_prog_id,tmp_user_id,tmp_cur_sco,tmp_dt)
  528. {
  529.   var return_value = "";
  530.   //add page num
  531.   return_value += "page_num=" + PAGE_NUM;
  532.   //add status
  533.   return_value += "&sco_status=" + get_item_in_list(flms_get_cookie_data(tmp_prog_id,tmp_user_id,"status"),tmp_cur_sco,"&");
  534.   //add location
  535.   return_value += "&location=" + get_item_in_list(flms_get_cookie_data(tmp_prog_id,tmp_user_id,"loc_" + tmp_dt),tmp_cur_sco,"&");
  536.   return return_value;
  537. }
  538.  
  539. function flms_get_browse()
  540. {
  541.   var tmp_boolean = false
  542.   if (get_cookie_value("BROWSE","false") == "true")
  543.     tmp_boolean = true;
  544.   return tmp_boolean;
  545. }
  546.  
  547.